Data communication networks are built from various communication lines connected to each other. Every communication line has a specific capacity (or bandwidth), generally measured in units of data per time, typically kilobits per second (kbps). When data is transmitted over a communication line by some station in the network, hereinbelow referred to as the sitting station, it is transmitted at the specific transmission rate of that communication line. Between the transmitting station and the communication line there is usually a queue of limited size, in which data waits to be sent if the line is occupied. If a station attempts to transmit data faster than the capacity of the line, the excess data is stored in the queue until it can be sent. If too much data is sent to the queue, the buffer will overflow and data will be lost (or dropped). Therefore, a transmitting station has to adjust its transmission rate to the capacity of the line.
Furthermore, this queue may be distributed in several locations along the communication lines in buffers. Some of these buffers may be “far” from the sender and may be located in intermediary nodes along the network. These buffers of intermediary nodes may not be controlled or measured by the sender. Thus, in adjusting its transmission rate, a transmitting station also must take into account the state of the queue (e.g. whether the queue is accumulating or emptying).
These networks use standard communication protocols to allow communication between computers, for example, Transmission Control Protocol/Internet Protocol (TCP/IP) and User Datagram Protocol/Internet Protocol (UDP/IP). In the transfer of data or information between computers, standard methods are used, for example HyperText Transfer Protocol (HTTP) Internet browsers and HTTP servers, file transfer protocol (FTP) servers, etc. Unfortunately, the rate control mechanism standards known in the art are generally loss based. For example, in TCP/IP communications the rate of transmission is increased until data loss is detected, guaranteeing lost packets that will have to be resent.
Users of data communication networks often experience severe communication constraints due to non-optimal handling of the data transmission. This may be due to an inefficient use of the network bandwidth and a rate of data transmittal slower than necessary. Contributing to these are the inherent inefficiencies of existing communication protocol standards and the current explosion of network traffic, which is overloading the capacity of networks.